
package com.jf.cloud.im.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.im.model.ImMsgBizUser;
import com.jf.cloud.im.model.ImMsgBizUserHistory;

/**
 * 用户最近聊天记录表
 *
 * @author zz
 * @date 2021-08-25 13:58:56
 */
public interface ImMsgBizUserService {

    /**
     * 分页获取用户最近聊天记录表列表
     * @param pageDTO 分页参数
     * @return 用户最近聊天记录表列表分页数据
     */
    PageVO<ImMsgBizUser> page(PageDTO pageDTO);

    /**
     * 分页获取用户最近聊天记录表列表
     * @param pageDTO 分页参数
     * @param sendType 分页参数
     * @param bizId 分页参数
     * @return 用户最近聊天记录表列表分页数据
     */
    PageVO<ImMsgBizUser> pageBySendTypeAndBizId(PageDTO pageDTO, Integer sendType, Long bizId);

    /**
     * 分页获取用户最近聊天记录表列表
     * @param pageDTO 分页参数
     * @param userId 用户id
     * @return 用户最近聊天记录表列表分页数据
     */
    PageVO<ImMsgBizUser> pageByUserId(PageDTO pageDTO, Long userId);

    /**
     * 根据用户最近聊天记录表id获取用户最近聊天记录表
     *
     * @param id 用户最近聊天记录表id
     * @return 用户最近聊天记录表
     */
    ImMsgBizUser getById(Long id);

    /**
     * 根据用户最近聊天记录表id获取用户最近聊天记录表
     *
     * @param sendType 发送类型
     * @param bizId 商家或平台id
     * @param userId 用户id
     * @return 用户最近聊天记录表
     */
    ImMsgBizUser getBySendTypeBizIdUserId(Integer sendType, Long bizId, Long userId);

    /**
     * 保存用户最近聊天记录表
     * @param imMsgBizUser 用户最近聊天记录表
     */
    void save(ImMsgBizUser imMsgBizUser);

    /**
     * 更新用户最近聊天记录表
     * @param imMsgBizUser 用户最近聊天记录表
     */
    void update(ImMsgBizUser imMsgBizUser);

    /**
     * 根据用户最近聊天记录表id删除用户最近聊天记录表
     * @param id 用户最近聊天记录表id
     */
    void deleteById(Long id);

    /**
     * 更新用户和店铺最后的消息
     *
     * @param imMsgBizUserHistory 消息历史记录实体类
     */
    void updateBizUserLastMsg(ImMsgBizUserHistory imMsgBizUserHistory);
}
